﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Web.UI.DataVisualization.Charting;
using Terrae.Clases;
using Terrae.GUI.Contrato;
using Terrae.Logica.Comandos;
using Terrae.Logica.FabricaLogica;
using Terrae.Clases.FabricaClase;

namespace Terrae.GUI.Presentador
{
    public class PresentadorCVDiario
    {
        #region Atributos 
        
        /// <summary>
        /// Instancia del contrato IContratoCVDiario.
        /// </summary>
        private IContratoCVDiario _contrato;
        private Comando<int> _comando;
        private int _promedio = 0;
        private List<int> _lVariable = new List<int>();
        List<string> _variable = new List<string>();
        private Entidad _invernadero = FabricaEntidad.NuevoInvernadero();
        private DataTable dt = new DataTable();
        private DataColumn dc;
        private DataRow dr;
        
        #endregion Atributos

        #region Constructor

        /// <summary>
        /// Constructor del PresentadorCDDiario.
        /// </summary>
        public PresentadorCVDiario(IContratoCVDiario contrato)
        {
            _contrato = contrato;
        }

        #endregion Constructor

        #region Métodos

        #region Llenar Lista de Variables

        /// <summary>
        /// Método que llena la lista con los 
        /// nombres de las variables.
        /// </summary>
        public void LlenarVariable()
        {
            _variable.Add("Temperatura");
            _variable.Add("Humedad");
            _variable.Add("Luminosidad");
            _variable.Add("Acidez");
        }

        #endregion Llenar Lista de Variables

        #region Cargar GV Variables Invernadero

        /// <summary>
        /// Metodo que carga las variables en el GridView.
        /// </summary>
        /// <param name="idProyecto"></param>
        /// <returns></returns>
        public List<int> BuscarVariables()
        {
            int id = Convert.ToInt32(_contrato.Sesion["IdInv"]);
            LlenarVariable();
            for (int i = 0; i < 4; i++)
            {
                (_invernadero as Invernadero).Id = id;
                (_invernadero as Invernadero).Nombre = _variable[i];
                _comando = FabricaComando.CrearComandoListarVariables(_invernadero);
                _promedio = _comando.Ejecutar();
                _lVariable.Add(_promedio);
            }
            PromedioVariables(_lVariable);    
            return (_lVariable);
        }

        #endregion Cargar GV Variables Invernadero

        #region Barras Promedio de Variables

        /// <summary>
        /// Método que llena las barras con el promedio obtenido.
        /// </summary>
        /// <param name="_avg"></param>
        public void PromedioVariables(List<int> _avg)
        {
            LlenarVariable();
            dc = new DataColumn();
            dc.ColumnName = "Variable";
            dt.Columns.Add(dc);
            dc = new DataColumn();
            dc.ColumnName = "Valor Promedio";
            dt.Columns.Add(dc);

            for (int i = 0; i < 4; i++)
            {
                dr = dt.NewRow();
                dr["Variable"] = _variable[i];
                dr["Valor Promedio"] = _lVariable[i];

                dt.Rows.Add(dr);
                _contrato.BarraVariables.DataSource = dt;
                _contrato.BarraVariables.Series["Series1"].XValueMember = "Variable";
                _contrato.BarraVariables.Series["Series1"].YValueMembers = "Valor Promedio";
                _contrato.BarraVariables.DataBind();
            }
        }

        #endregion Tablas Promedio de Variables

        #endregion Métodos
    }
}